package 二分法;

/**
 * @author zhengTao
 * @version 1.0
 * @description:  搜索插入位置,二分查找，找到返回位置，即使没有找到
 * @date 2022/10/14 11:43
 */
public class Demo35 {

    public int searchInsert(int[] nums, int target) {
        //左闭右闭
        int left=0;
        int right=nums.length-1;
        while (left<=right){
            int mid=left+(right-left)/2;
            if(nums[mid]<target){
                left=mid+1;
            }else if(nums[mid]>target){
                right=mid-1;
            }else {
                return mid;
            }
        }
        //证明数组里面不存该数字   1,3,5,6     target = 2
        // 1===》left=0,right=3 mid=1
        // 2===> left=0 .right=0  mid=1
        // 3----->left=1  ,right=0   跳出循环，此时  插入位置为 1  即left或者right+1
        //---------------------------------
        //[1,3,5,6]  target = 7
        // 1===》left=0,right=3 mid=1
        // 2===> left=1 .right=3  mid=2
        // 3===> left=2 .right=3  mid=2
        // 4===> left=3 .right=3  mid=3
        // 5===> left=4 .right=3  mid=跳出循环   插入位置为  4  即left或者right+1
        return left;
    }
}
